Представления (Views)
- Определение и принципы
- Правила
- Шаблонизаторы
- Структура папок
- Пример кода
- Пространство имен
- Поддержка разных тем
Определение и принципы
Прочтите Определения и принципы
Правила
- Представления
СЛЕДУЕТ создавать внутри модулей, в этом случае они будут автоматически доступны для использования в веб-контроллерах.
Шаблонизаторы
Darklyy поддерживает несколько шаблонизаторов:
- Шаблонизатор от Symfony Twig
- Шаблонизатор от Laravel Blade
Структура папок
Для общих представлений
- resources
- views
- home.blade.php
- profile.html.twig
- ...
Для представлений модулей
- usr
- modules
- {module-name}
- UI
- WEB
- Views
- home.blade.php
- profile.html.twig
- ...
Примеры кода
Приветственная страница
<!DOCTYPE html>
<html>
<head>
<title>Добро пожаловать</title>
</head>
<body>
<div class="container">
<div class="content">
<div class="title">Добро пожаловать</div>
</div>
</div>
</body>
</html>
Вызов представления из контроллера
Blade
class Controller extends WebController
{
public function sayWelcome()
{
return view('welcome');
}
}
Twig
class Controller extends WebController
{
public function sayWelcome()
{
display('welcome');
}
}
Пространство имен
По умолчанию все представления имеют пространство имен как camelCase имени модуля.
Например, к представлению с именем welcome
Home
view(home::welcome)
Если вы попытаетесь получить к нему доступ без пространства имен view('welcome')
- Файлы представлений в папке Resource являются исключением из этого правила и будут иметь пространство имен без имени модуля, например.
view('home')
- Также исключение действует если используются разные темы
Поддержка разных тем
Darklyy поддерживает реализацию разных тем в одном приложении. Для активации данной функции необходимо в файле конфигурации theme.config.php
Theme::set('theme-name');
Внимание при использовании темы меняется структура расположение фалов представлений. В путь добавляется папка с именем темы.
Структура папок
Для общих представлений
- usr
- themes
- {theme-name}
- views
- home.blade.php
- profile.html.twig
- ...
Для представлений модулей
- usr
- modules
- {module-name}
- UI
- WEB
- Views
- {theme-name}
- home.blade.php
- profile.html.twig
- ...
Методы
// Установить тему
Theme::set('theme-name');
// Получить текущую тему
Theme::active();
// Отключить использование тем. Таким образом, ни одна тема не будет активной.
Theme::clear();
// Получить путь к теме
Theme::path($path = 'views');
// Результат:
// /usr/themes/active-theme/views
Theme::path($path = 'views', $themeName = 'admin');
// Результат:
// /usr/themes/admin/views
Theme::getViewPaths();
// Результат:
// [
// '/usr/themes/admin/views',
// '/resources/views'
// ]
Middleware для разных тем
Примеры использования:
// Пример 1: установить тему для определенного маршрута
Route::get('/dashboard', 'DashboardController@index')
->middleware('theme:dashboard-theme');
// Пример 1: установить тему для группы маршрутов
Route::group(['middleware'=>'theme:admin-theme'], function() {
// "admin-theme" будет применено для маршрутов указанных в этом кейсе
});